<!DOCTYPE html>
<!-- saved from url=(0041)http://c.biancheng.net/view/vip_7077.html -->
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript" async="" charset="utf-8" src="./10.14Java异常处理规则（新手必看）_files/core.php"></script>

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面，任何其他内容都*必须*跟随其后！ -->
<!-- 启用Chromium高速渲染模式 -->
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<!-- 禁止百度转码 -->
<meta name="applicable-device" content="pc,mobile">
<meta name="MobileOptimized" content="width">
<meta name="HandheldFriendly" content="true">
<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">
<!-- 禁止识别电话号码 -->
<meta name="format-detection" content="telephone=no">

<link rel="shortcut icon" href="http://c.biancheng.net/favicon.ico?v=1.6.72">
<link href="./10.14Java异常处理规则（新手必看）_files/common.css" rel="stylesheet">
<title>Java异常处理规则（新手必看）</title>
<meta name="description" content="前面介绍了使用异常处理的优势、便捷之处，本节将进一步从程序性能优化、结构优化的角度给出异常处理的一般规则。成功的异常处理应该实现如下 4 个目标。 使程序代码混乱最小化">
</head>
<body>
<div id="topbar" class="clearfix">
	<ul id="product-type" class="left">
		<li>
			<a href="http://c.biancheng.net/"><span class="iconfont iconfont-home"></span>首页</a>
		</li>
		<li class="active">
			<a href="http://c.biancheng.net/sitemap/" rel="nofollow"><span class="iconfont iconfont-book"></span>教程</a>
		</li>
		<li>
			<a href="http://vip.biancheng.net/p/vip/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-vip"></span>VIP会员</a>
		</li>
		<li>
			<a href="http://vip.biancheng.net/p/q2a/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-q2a"></span>一对一答疑</a>
		</li>
		<li>
			<a href="http://fudao.biancheng.net/" rel="nofollow" target="_blank"><span class="iconfont iconfont-fudao"></span>辅导班</a>
		</li>
	</ul>
</div>
<div id="header" class="clearfix">
	<a id="logo" class="left" href="http://c.biancheng.net/">
		<img height="26" src="./10.14Java异常处理规则（新手必看）_files/logo.png" alt="C语言中文网">
	</a>
	<ul id="nav-main" class="hover-none left clearfix">
		<li class="wap-yes"><a href="http://c.biancheng.net/">首页</a></li>
		<li><a href="http://c.biancheng.net/c/">C语言教程</a></li>
		<li><a href="http://c.biancheng.net/cplus/">C++教程</a></li>
		<li><a href="http://c.biancheng.net/python/">Python教程</a></li>
		<li><a href="http://c.biancheng.net/java/">Java教程</a></li>
		<li><a href="http://c.biancheng.net/linux_tutorial/">Linux入门</a></li>
		<li><a href="http://c.biancheng.net/sitemap/" title="网站地图">更多&gt;&gt;</a></li>
	</ul>
	<span id="sidebar-toggle" class="toggle-btn" toggle-target="#sidebar">目录 <span class="glyphicon"></span></span>

	<a href="http://vip.biancheng.net/?from=topbar" class="user-info glyphicon glyphicon-user hover-none" target="_blank" rel="nofollow" title="用户中心"></a>
</div>
<div id="main" class="clearfix">
	<div id="sidebar" class="toggle-target">
	<div id="contents">
		<dt><span class="glyphicon glyphicon-option-vertical" aria-hidden="true"></span><a href="http://c.biancheng.net/java/">Java教程</a></dt>
		
			<dd>
				<span class="channel-num">1</span>
				<a href="http://c.biancheng.net/java/10/">Java入门基础及环境搭建</a>
			</dd>
		
			<dd>
				<span class="channel-num">2</span>
				<a href="http://c.biancheng.net/java/20/">Java程序设计基础</a>
			</dd>
		
			<dd>
				<span class="channel-num">3</span>
				<a href="http://c.biancheng.net/java/30/">Java流程控制语句</a>
			</dd>
		
			<dd>
				<span class="channel-num">4</span>
				<a href="http://c.biancheng.net/java/40/">Java字符串处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">5</span>
				<a href="http://c.biancheng.net/java/50/">Java数字和日期处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">6</span>
				<a href="http://c.biancheng.net/java/60/">Java内置包装类</a>
			</dd>
		
			<dd>
				<span class="channel-num">7</span>
				<a href="http://c.biancheng.net/java/70/">Java数组处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">8</span>
				<a href="http://c.biancheng.net/java/80/">Java类和对象</a>
			</dd>
		
			<dd>
				<span class="channel-num">9</span>
				<a href="http://c.biancheng.net/java/90/">Java继承和多态</a>
			</dd>
		<dd class="this"> <span class="channel-num">10</span> <a href="http://c.biancheng.net/java/100/">Java异常处理</a> </dd><dl class="dl-sub"><dd>10.1 <a href="http://c.biancheng.net/view/6635.html">Java异常处理</a></dd><dd>10.2 <a href="http://c.biancheng.net/view/6637.html">Java中Error和Exception的异同</a></dd><dd>10.3 <a href="http://c.biancheng.net/view/1043.html">Java异常处理机制</a></dd><dd>10.4 <a href="http://c.biancheng.net/view/6732.html">Java try catch语句详解</a></dd><dd>10.5 <a href="http://c.biancheng.net/view/vip_7074.html">【Java项目实战】计算平均成绩</a><span class="glyphicon glyphicon-usd"></span></dd><dd>10.6 <a href="http://c.biancheng.net/view/1046.html">Java try catch finally语句</a></dd><dd>10.7 <a href="http://c.biancheng.net/view/vip_7075.html">Java finally和return的执行顺序（非常重要）</a><span class="glyphicon glyphicon-usd"></span></dd><dd>10.8 <a href="http://c.biancheng.net/view/6745.html">Java 9增强的自动资源管理</a></dd><dd>10.9 <a href="http://c.biancheng.net/view/6751.html">Java声明和抛出异常</a></dd><dd>10.10 <a href="http://c.biancheng.net/view/6734.html">Java 7新特性之多异常捕获</a></dd><dd>10.11 <a href="http://c.biancheng.net/view/1051.html">Java自定义异常</a></dd><dd>10.12 <a href="http://c.biancheng.net/view/1052.html">Java验证用户信息</a></dd><dd>10.13 <a href="http://c.biancheng.net/view/vip_7076.html">【Java示例】完善除法运算的错误信息</a><span class="glyphicon glyphicon-usd"></span></dd><dd class="active">10.14 <a href="http://c.biancheng.net/view/vip_7077.html">Java异常处理规则（新手必看）</a><span class="glyphicon glyphicon-usd"></span></dd><dd>10.15 <a href="http://c.biancheng.net/view/6657.html">Java的异常跟踪栈</a></dd><dd>10.16 <a href="http://c.biancheng.net/view/6689.html">Java.util.logging记录日志</a></dd></dl>
			<dd>
				<span class="channel-num">11</span>
				<a href="http://c.biancheng.net/java/110/">Java集合、泛型和枚举</a>
			</dd>
		
			<dd>
				<span class="channel-num">12</span>
				<a href="http://c.biancheng.net/java/120/">Java反射机制</a>
			</dd>
		
			<dd>
				<span class="channel-num">13</span>
				<a href="http://c.biancheng.net/java/130/">Java输入/输出流</a>
			</dd>
		
			<dd>
				<span class="channel-num">14</span>
				<a href="http://c.biancheng.net/java/java/135/">Java注解</a>
			</dd>
		
	</div>
</div>
	<div id="article-wrap">
		<div id="article">
			<div class="arc-info">
	<span class="position"><span class="glyphicon glyphicon-map-marker"></span> <a href="http://c.biancheng.net/">首页</a> &gt; <a href="http://c.biancheng.net/java/">Java教程</a> &gt; <a href="http://c.biancheng.net/java/100/">Java异常处理</a></span>
	<span class="read-num">阅读：2,871</span>
</div>

<div id="ad-position-bottom"></div>
			<h1>Java异常处理规则（新手必看）</h1>
			<div class="pre-next-page clearfix">
                    <span class="pre left"><span class="icon">&lt;</span> <span class="text-brief text-brief-pre">上一页</span><a href="http://c.biancheng.net/view/vip_7076.html">【Java示例】完善除法运算的错误信息</a></span>
                    <span class="next right"><a href="http://c.biancheng.net/view/6657.html">Java的异常跟踪栈</a><span class="text-brief text-brief-next">下一页</span> <span class="icon">&gt;</span></span>
                </div>
			<div id="ad-arc-top"><p class="pic"></p><p class="text" adid="java-1v1q2a"><a href="http://c.biancheng.net/view/7552.html" target="_blank" style="color: #D33428;">C语言中文网推出辅导班啦，包括<span style="color: #008000;">「C语言辅导班、C++辅导班、算法/数据结构辅导班」</span>，全部都是一对一教学：一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线，随时响应！</a></p></div>
			<div id="arc-body">前面介绍了使用异常处理的优势、便捷之处，本节将进一步从程序性能优化、结构优化的角度给出异常处理的一般规则。成功的异常处理应该实现如下 4 个目标。<br>
<ol>
	<li>
		使程序代码混乱最小化。</li>
	<li>
		捕获并保留诊断信息。</li>
	<li>
		通知合适的人员。</li>
	<li>
		采用合适的方式结束异常活动。</li>
</ol>
<br>
下面介绍达到这种效果的基本准则。<br>
<h2>
	不要过度使用异常</h2>
不可否认，Java 的异常机制确实方便，但滥用异常机制也会带来一些负面影响。过度使用异常主要有以下两个方面：<br>
<ol>
	<li>
		把异常和普通错误混淆在一起，不再编写任何错误处理代码，而是以简单地抛出异常来代替所有的错误处理。</li>
	<li>
		使用异常处理来代替流程控制。</li>
</ol>
<br>
熟悉了异常使用方法后，程序员可能不再愿意编写烦琐的错误处理代码，而是简单地抛出异常。实际上这样做是不对的，对于完全已知和普通的错误，应该编写处理这种错误处理代码，增加程序的健壮性；只有对外部的、不能确定和预知的运行时错误才使用异常。<br>
<br>
下面我们来看《<a href="http://c.biancheng.net/view/vip_7061.html" target="_blank">Java五子棋游戏</a>》一节中处理用户输入坐标点已有棋子的两种方式。
<div class="snippet-container" style="undefined;"><div class="sh_bright snippet-wrap"><div class="snippet-menu sh_sourceCode" style="display: none;"><pre><a class="snippet-copy sh_url" href="http://c.biancheng.net/view/vip_7077.html#" style="display: none;">复制</a><a class="snippet-text sh_url" href="http://c.biancheng.net/view/vip_7077.html#">纯文本</a><a class="snippet-window sh_url" href="http://c.biancheng.net/view/vip_7077.html#">复制</a></pre></div><pre class="java sh_java snippet-formatted sh_sourceCode"><ol class="snippet-num"><li><span class="sh_comment">// 如果用户试图下棋的坐标点已有棋子了</span></li><li><span class="sh_keyword">if</span> <span class="sh_symbol">(!</span>gb<span class="sh_symbol">.</span>board<span class="sh_symbol">[</span>xPos <span class="sh_symbol">-</span> <span class="sh_number">1</span><span class="sh_symbol">][</span>yPos <span class="sh_symbol">-</span> <span class="sh_number">1</span><span class="sh_symbol">].</span><span class="sh_function">equals</span><span class="sh_symbol">(</span><span class="sh_string">"╋"</span><span class="sh_symbol">))</span><span class="sh_cbracket">{</span></li><li>    System<span class="sh_symbol">.</span>out<span class="sh_symbol">.</span><span class="sh_function">println</span> <span class="sh_symbol">(</span><span class="sh_string">"您输入的坐标点已有棋子了，请重新输入"</span><span class="sh_symbol">);</span></li><li>    <span class="sh_keyword">continue</span><span class="sh_symbol">;</span></li><li><span class="sh_cbracket">}</span></li></ol></pre><pre class="snippet-textonly sh_sourceCode" style="display:none;">// 如果用户试图下棋的坐标点已有棋子了
if (!gb.board[xPos - 1][yPos - 1].equals("╋")){
    System.out.println ("您输入的坐标点已有棋子了，请重新输入");
    continue;
}</pre></div></div>
上面这种处理方式检测到用户试图下棋的坐标点已经有棋子了，立即打印一条提示语句，并重新开始下一次循环。这种处理方式简洁明了，逻辑清晰，提高运行效率。<br>
<br>
如果将上面的处理机制改为如下方式：<br>
<div class="snippet-container" style="undefined;"><div class="sh_bright snippet-wrap"><div class="snippet-menu sh_sourceCode" style="display:none;"><pre><a class="snippet-copy sh_url" href="http://c.biancheng.net/view/vip_7077.html#" style="display: none;">复制</a><a class="snippet-text sh_url" href="http://c.biancheng.net/view/vip_7077.html#">纯文本</a><a class="snippet-window sh_url" href="http://c.biancheng.net/view/vip_7077.html#">复制</a></pre></div><pre class="java sh_java snippet-formatted sh_sourceCode"><ol class="snippet-num"><li><span class="sh_comment">// 如果用户试图下棋的坐标点己经有棋子了，程序自行抛出异常</span></li><li><span class="sh_keyword">if</span> <span class="sh_symbol">(!</span>gb<span class="sh_symbol">.</span>board<span class="sh_symbol">[</span>xPos <span class="sh_symbol">-</span> <span class="sh_number">1</span><span class="sh_symbol">][</span>yPos <span class="sh_symbol">-</span> <span class="sh_number">1</span><span class="sh_symbol">].</span><span class="sh_function">equals</span> <span class="sh_symbol">(</span><span class="sh_string">"╋"</span><span class="sh_symbol">))</span> <span class="sh_cbracket">{</span></li><li>    <span class="sh_keyword">throw</span> <span class="sh_keyword">new</span> <span class="sh_function">Exception</span> <span class="sh_symbol">(</span><span class="sh_string">"您试图下棋的坐标点已经有棋子了"</span><span class="sh_symbol">);</span></li><li><span class="sh_cbracket">}</span></li></ol></pre><pre class="snippet-textonly sh_sourceCode" style="display:none;">// 如果用户试图下棋的坐标点己经有棋子了，程序自行抛出异常
if (!gb.board[xPos - 1][yPos - 1].equals ("╋")) {
    throw new Exception ("您试图下棋的坐标点已经有棋子了");
}</pre></div></div>
上面的处理方式没有提供有效的错误处理代码，当程序检测到用户试图下棋的坐标点已经有棋子时，并没有提供相应的处理，而是简单的抛出了一个异常。这种处理方式虽然简单，但 Java 运行时接收到这个异常后，还需要进行相应的 catch 块来捕获该异常，所以运行效率要差一些。而且用户下棋重复这个错误完全是预料的，所以程序完全可以针对该错误提供相应的处理，而不是抛出异常。<br>
<br>
异常处理机制的效率比正常的流程控制效率差，所以不要使用异常处理来代替正常的程序流程控制。例如，对于以下代码：
<div class="snippet-container" style="undefined;"><div class="sh_bright snippet-wrap"><div class="snippet-menu sh_sourceCode" style="display:none;"><pre><a class="snippet-copy sh_url" href="http://c.biancheng.net/view/vip_7077.html#" style="display: none;">复制</a><a class="snippet-text sh_url" href="http://c.biancheng.net/view/vip_7077.html#">纯文本</a><a class="snippet-window sh_url" href="http://c.biancheng.net/view/vip_7077.html#">复制</a></pre></div><pre class="java sh_java snippet-formatted sh_sourceCode"><ol class="snippet-num"><li><span class="sh_comment">// 定义一个字符串数组</span></li><li>String<span class="sh_symbol">[]</span> arr <span class="sh_symbol">=</span> <span class="sh_cbracket">{</span> <span class="sh_string">"Hello"</span><span class="sh_symbol">,</span> <span class="sh_string">"Java"</span><span class="sh_symbol">,</span> <span class="sh_string">"Spring"</span> <span class="sh_cbracket">}</span><span class="sh_symbol">;</span></li><li><span class="sh_comment">// 使用异常处理来遍历arr数组的每个元素</span></li><li><span class="sh_keyword">try</span> <span class="sh_cbracket">{</span></li><li>    <span class="sh_type">int</span> i <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span></li><li>    <span class="sh_keyword">while</span> <span class="sh_symbol">(</span><span class="sh_keyword">true</span><span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li>        System<span class="sh_symbol">.</span>out<span class="sh_symbol">.</span><span class="sh_function">println</span><span class="sh_symbol">(</span>arr<span class="sh_symbol">[</span>i<span class="sh_symbol">++]);</span></li><li>    <span class="sh_cbracket">}</span></li><li><span class="sh_cbracket">}</span> <span class="sh_keyword">catch</span> <span class="sh_symbol">(</span><span class="sh_usertype">ArrayIndexOutOfBoundsException</span><span class="sh_normal"> </span>ae<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li><span class="sh_cbracket">}</span></li></ol></pre><pre class="snippet-textonly sh_sourceCode" style="display:none;">// 定义一个字符串数组
String[] arr = { "Hello", "Java", "Spring" };
// 使用异常处理来遍历arr数组的每个元素
try {
    int i = 0;
    while (true) {
        System.out.println(arr[i++]);
    }
} catch (ArrayIndexOutOfBoundsException ae) {
}</pre></div></div>
运行上面程序确实可以实现遍历 arr 数组元素的功能，但这种写法可读性较差，而且运行效率也不高。程序完全有能力避免产生 ArrayIndexOutOfBoundsException 异常，程序“故意”制造这种异常，然后使用 catch 块去捕获该异常，这是不应该的。将程序改为如下形式肯定要好得多。<br>
<div class="snippet-container" style="undefined;"><div class="sh_bright snippet-wrap"><div class="snippet-menu sh_sourceCode" style="display:none;"><pre><a class="snippet-copy sh_url" href="http://c.biancheng.net/view/vip_7077.html#" style="display: none;">复制</a><a class="snippet-text sh_url" href="http://c.biancheng.net/view/vip_7077.html#">纯文本</a><a class="snippet-window sh_url" href="http://c.biancheng.net/view/vip_7077.html#">复制</a></pre></div><pre class="java sh_java snippet-formatted sh_sourceCode"><ol class="snippet-num"><li><span class="sh_usertype">String</span><span class="sh_normal"> </span>arr<span class="sh_symbol">[]</span> <span class="sh_symbol">=</span> <span class="sh_cbracket">{</span><span class="sh_string">"Hello"</span><span class="sh_symbol">,</span><span class="sh_string">"Java"</span><span class="sh_symbol">,</span><span class="sh_string">"Spring"</span><span class="sh_cbracket">}</span><span class="sh_symbol">;</span></li><li><span class="sh_keyword">for</span> <span class="sh_symbol">(</span><span class="sh_type">int</span> i <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span> i <span class="sh_symbol">&lt;</span> arr<span class="sh_symbol">.</span>length<span class="sh_symbol">;</span> i<span class="sh_symbol">++)</span> <span class="sh_cbracket">{</span></li><li>    System<span class="sh_symbol">.</span>out<span class="sh_symbol">.</span><span class="sh_function">println</span><span class="sh_symbol">(</span>arr<span class="sh_symbol">[</span>i<span class="sh_symbol">]);</span></li><li><span class="sh_cbracket">}</span></li></ol></pre><pre class="snippet-textonly sh_sourceCode" style="display:none;">String arr[] = {"Hello","Java","Spring"};
for (int i = 0; i &lt; arr.length; i++) {
    System.out.println(arr[i]);
}</pre></div></div>
异常只应该用于处理非正常的情况，不要使用异常处理来代替正常的流程控制。对于一些完全可预知，而且处理方式清楚的错误，程序应该提供相应的错误处理代码，而不是将其笼统地称为异常。<br>
<h2>
	不要使用过于庞大的try块</h2>
很多初学异常机制的读者喜欢在 try 块里放置大量的代码，这样看上去“很简单“，但这种”简单“只是一种假象，因为 try 块里的代码过于庞大，业务过于复杂，就会造成 try 块中出现异常的可能性大大增加，从而导致分析异常原因的难度也大大增加。而且当 try 块过于庞大时，就难免在 try 块后紧跟大量的 catch 块才可以针对不同的异常提供不同的处理逻辑。同一个 try 块后紧跟大量的 catch 块则需要分析它们之间的逻辑关系，反而增加了变成复杂度。<br>
<br>
正确的做法是，把大块的 try 块分割成多个可能出现异常的程序段落，并把它们放在单独的 try 块中，从而分别捕获并处理异常。
<h2>
	避免使用 Catch All 语句</h2>
所谓 Catch All 语句指的是一种异常捕获模块，它可以处理程序发生的所有可能异常。例如，如下代码片段：
<div class="snippet-container" style="undefined;"><div class="sh_bright snippet-wrap"><div class="snippet-menu sh_sourceCode" style="display:none;"><pre><a class="snippet-copy sh_url" href="http://c.biancheng.net/view/vip_7077.html#" style="display: none;">复制</a><a class="snippet-text sh_url" href="http://c.biancheng.net/view/vip_7077.html#">纯文本</a><a class="snippet-window sh_url" href="http://c.biancheng.net/view/vip_7077.html#">复制</a></pre></div><pre class="java sh_java snippet-formatted sh_sourceCode"><ol class="snippet-num"><li><span class="sh_keyword">try</span> <span class="sh_cbracket">{</span></li><li>    <span class="sh_comment">// 可能引发Checked异常的代码</span></li><li><span class="sh_cbracket">}</span> <span class="sh_keyword">catch</span> <span class="sh_symbol">(</span><span class="sh_usertype">Throwsble</span><span class="sh_normal"> </span>t<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li>    <span class="sh_comment">// 进行异常处理</span></li><li>    t<span class="sh_symbol">.</span><span class="sh_function">printStackTrace</span><span class="sh_symbol">();</span></li><li><span class="sh_cbracket">}</span></li></ol></pre><pre class="snippet-textonly sh_sourceCode" style="display:none;">try {
    // 可能引发Checked异常的代码
} catch (Throwsble t) {
    // 进行异常处理
    t.printStackTrace();
}</pre></div></div>
不可否认，每个程序员都曾经用过这种异常处理方式，但在编写关键程序时就应避免使用这种异常处理方式。这种处理方式有如下两点不足之处。<br>
<ol>
	<li>
		所有的异常都采用相同的处理方式，这将导致无法对不同的异常分情况处理，如果要分情况处理，则需要在 catch 块中使用分支语句进行控制，这是得不偿失的做法。</li>
	<li>
		这种捕获方式可能将程序中的错误、Runtime 异常等可能导致程序终止的情况全部捕获到，从而“压制”了异常。如果出现了一些“关键”异常，那么此异常也会被“静悄悄”地忽略。</li>
</ol>
<br>
实际上，Catch All 语句不过是一种通过避免错误处理而加快编程进度的机制，应尽量避免在实际应用中使用这种语句。
<h2>
	不要忽略捕获到的异常</h2>
不要忽略异常，既然已捕获到异常，那 catch 块理应处理并修复这个错误。catch 块整个为空，或者仅仅打印出错信息都是不妥的。程序出了错误，所有的人都看不到任何异常，但整个应用可能已经彻底坏了，这是最可怕的事情。<br>
<br>
对异常进行合适的修复，然后绕过异常发生的地方继续执行；或者用别的数据进行计算，以代替期望的方法返回值；或者提示用户重新操作等。总之，对于 Checked 异常，程序应该尽量修复。</div>
			<div id="arc-append">
	<p>关注微信公众号「站长严长生」，在手机上阅读所有教程，随时随地都能学习。本公众号由<a class="col-link" href="http://c.biancheng.net/view/8092.html" target="_blank" rel="nofollow">C语言中文网站长</a>运营，每日更新，坚持原创，敢说真话，凡事有态度。</p>
	<p style="margin-top:12px; text-align:center;">
		<img width="180" src="./10.14Java异常处理规则（新手必看）_files/qrcode_weixueyuan_original.png" alt="魏雪原二维码"><br>
		<span class="col-green">微信扫描二维码关注公众号</span>
	</p>
</div>
<!-- <p>关注微信公众号「魏雪原」，跟着<a class="col-link" href="/view/8092.html" target="_blank">站长</a>一起学习，拒绝躺平，跳出内卷，用知识完成阶级跃升：</p>
	<ul>
		<li>每日更新，坚持原创，敢说真话，凡事有态度。</li>
		<li>编程+求职+创业+营销，既有硬知识，也有软技能。</li>
		<li>手机端阅读教程，随时随地都能学习。</li>
		<li>即将绑定网站部分功能，包括注册登录、找回密码、获取下载链接等。</li>
	</ul> -->
			<div class="pre-next-page clearfix">
                    <span class="pre left"><span class="icon">&lt;</span> <span class="text-brief text-brief-pre">上一页</span><a href="http://c.biancheng.net/view/vip_7076.html">【Java示例】完善除法运算的错误信息</a></span>
                    <span class="next right"><a href="http://c.biancheng.net/view/6657.html">Java的异常跟踪栈</a><span class="text-brief text-brief-next">下一页</span> <span class="icon">&gt;</span></span>
                </div>
			<div id="ad-arc-bottom"></div>

<!-- <div id="ad-bottom-weixin" class="clearfix">
	<div class="left" style="width: 535px;">
		<p><span class="col-red">编程帮</span>，一个分享编程知识的公众号。跟着<a class="col-link" href="/cpp/about/author/" target="_blank">站长</a>一起学习，每天都有进步。</p>
		<p>通俗易懂，深入浅出，一篇文章只讲一个知识点。</p>
		<p>文章不深奥，不需要钻研，在公交、在地铁、在厕所都可以阅读，随时随地涨姿势。</p>
		<p>文章不涉及代码，不烧脑细胞，人人都可以学习。</p>
		<p>当你决定关注「编程帮」，你已然超越了90%的程序员！</p>
	</div>
	<div class="right" style="width: 150px;">
		<img width="150" src="/templets/new/images/erweima_biancheng.gif?v=1.6.72" alt="编程帮二维码" /><br />
		<span class="col-green">微信扫描二维码关注</span>
	</div>
</div> -->

<div id="nice-arcs" class="box-bottom">
	<h4>优秀文章</h4>
	<ul class="clearfix">
<li><a href="http://c.biancheng.net/view/914.html" title="Linux PV物理卷（创建、查看和删除）详解">Linux PV物理卷（创建、查看和删除）详解</a></li>
<li><a href="http://c.biancheng.net/view/1573.html" title="使用EL表达式访问JavaBean">使用EL表达式访问JavaBean</a></li>
<li><a href="http://c.biancheng.net/view/1715.html" title="C语言究竟是一门怎样的语言？">C语言究竟是一门怎样的语言？</a></li>
<li><a href="http://c.biancheng.net/view/1774.html" title="C语言运算符的优先级和结合性">C语言运算符的优先级和结合性</a></li>
<li><a href="http://c.biancheng.net/view/1945.html" title="TensorFlow实现视频分类的6种方法">TensorFlow实现视频分类的6种方法</a></li>
<li><a href="http://c.biancheng.net/view/2975.html" title="C# ToolStrip：工具栏控件">C# ToolStrip：工具栏控件</a></li>
<li><a href="http://c.biancheng.net/view/3076.html" title="Android音频以及音频播放器开发实例">Android音频以及音频播放器开发实例</a></li>
<li><a href="http://c.biancheng.net/view/3552.html" title="汇编语言布尔和比较指令简介">汇编语言布尔和比较指令简介</a></li>
<li><a href="http://c.biancheng.net/view/7755.html" title="Python保留字（关键字）一览表">Python保留字（关键字）一览表</a></li>
<li><a href="http://c.biancheng.net/hibernate/po.html" title="Hibernate持久化类详解">Hibernate持久化类详解</a></li>
</ul>
</div>
		</div>
		
	</div>
</div>
<script type="text/javascript">
// 当前文章ID
window.arcIdRaw = 'a_' + 7077;
window.arcId = "a9c4F2adLL6I4Ik8Bk+ttPK1UaBUWMYgDrLnXyvhgrKKF0z/KZzLbW0e6Cs";
window.typeidChain = "101|79";
</script>
<div id="footer" class="clearfix">
	<div class="info left">
	<p>精美而实用的网站，分享优质编程教程，帮助有志青年。千锤百炼，只为大作；精益求精，处处斟酌；这种教程，看一眼就倾心。</p>
	<p>
		<a href="http://c.biancheng.net/view/8066.html" target="_blank" rel="nofollow">关于网站</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8092.html" target="_blank" rel="nofollow">关于站长</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8097.html" target="_blank" rel="nofollow">如何完成一部教程</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8093.html" target="_blank" rel="nofollow">联系我们</a> <span>|</span>
		<a href="http://c.biancheng.net/sitemap/" target="_blank" rel="nofollow">网站地图</a>
	</p>
	<p>Copyright ©2012-2021 biancheng.net, <a href="http://www.beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#666;">陕ICP备15000209号</a></p>
	</div>
	<img class="right" src="./10.14Java异常处理规则（新手必看）_files/logo_bottom.gif" alt="底部Logo">
	<span id="return-top"><b>↑</b></span>
</div>

<script type="text/javascript">
window.siteId = 4;
window.cmsTemplets = "/templets/new";
window.cmsTempletsVer = "1.6.72";
</script>

<script src="./10.14Java异常处理规则（新手必看）_files/jquery1.12.4.min.js.下载"></script>
<script src="./10.14Java异常处理规则（新手必看）_files/common.js.下载"></script>
<span style="display:none;"><script src="./10.14Java异常处理规则（新手必看）_files/z_stat.php" type="text/javascript" defer="defer" async="async"></script></span>

</body></html>